home *** CD-ROM | disk | FTP | other *** search
/ How to Computers / HowTo Computers.iso / setup.mst < prev    next >
Text File  |  1993-11-18  |  18KB  |  515 lines

  1. '**************************************************************************
  2. '*              "How to Make Computers Work for You" setup proceedure
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  10.  
  11. ''Application constants and defaults
  12. CONST APPTITLE          = "How To - Computers"                  ''Title to display while installing app
  13. CONST APPDRIVE          = "C:"                                  ''Default drive for app
  14. CONST APPPATH           = "\MCWFY\"                             ''Default path for app
  15. CONST APPSIZE           = 1000000                               ''Approx. size of application files (for drive space warning)
  16. CONST INIFILE           = "MCWFY.INI"                           ''INI file for app info
  17. CONST PROGGROUP         = "CRT Applications"                    ''Name of program group for app
  18. CONST PROGITEM          = "How To - Computers"                  ''Name of program item for app
  19. CONST PROGEXE           = "MCW.EXE"                             ''Executable file for app
  20. CONST DRVTITLE          = "Video for Windows Runtime Drivers"   ''Title to display whil installing VfW drivers
  21.  
  22. ''Dialog ID's
  23. CONST DLG_WELCOME       = 100
  24. CONST DLG_ASKQUIT       = 200
  25. CONST DLG_DESTPATH      = 300
  26. CONST DLG_EXITFAILURE   = 400
  27. CONST DLG_EXITQUIT      = 600
  28. CONST DLG_EXITSUCCESS   = 700
  29. CONST DLG_APPHELP       = 900
  30. CONST DLG_CDPATH        = 1000
  31. CONST DLG_DESTTOOSMALL  = 1100
  32. CONST DLG_WINTOOSMALL   = 1200
  33. CONST DLG_RECPATH       = 1300
  34. CONST DLG_REGISTER      = 1400
  35. CONST DLG_RESTART       = 2600
  36. CONST DLG_RESTARTOPT    = 2700
  37. CONST DLG_BADPATH       = 6400
  38.  
  39. ''Bitmap ID
  40. CONST LOGO = 1
  41.  
  42. GLOBAL SizeReq&  '' Total Disk Size required for installation
  43.  
  44. GLOBAL DESTPATH$        ''Destination path
  45. GLOBAL DESTDRIVE$       ''Destination drive
  46. GLOBAL CDPATH$          ''CD-ROM path
  47. GLOBAL CDDRIVE$         ''CD-ROM drive
  48. GLOBAL RECPATH$         ''Student record path
  49. GLOBAL RECDRIVE$        ''Student record drive
  50. GLOBAL WINPATH$         ''Windows path
  51. GLOBAL WINSYSPATH$      ''Windows system path
  52. GLOBAL WINDRIVE$        ''Windows drive
  53.  
  54. DECLARE SUB InstallApp
  55. DECLARE SUB BuildVfW
  56. DECLARE SUB InstallVfW
  57. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  58. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  59. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  60. DECLARE SUB Reboot LIB "iniupd.dll"
  61. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  62.  
  63.  
  64.  
  65. INIT:
  66.         ''Set constants
  67.         CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  68.         HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  69.  
  70.         ''Windows paths
  71.         WINPATH$=GetWindowsDir()
  72.         WINSYSPATH$=GetWindowsSysDir()
  73.         WINDRIVE$=MID$(WINPATH$, 1, 1)
  74.  
  75.         ''Check windows version
  76.         WIN32ENABLED% = 0
  77.         MajorVer% = GetWindowsMajorVersion()
  78.         MinorVer% = GetWindowsMinorVersion()
  79.  
  80.         IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  81.             i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  82.             END
  83.         END IF
  84.  
  85.         IF OnWindowsNT() THEN
  86.               i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  87.               END
  88.         END IF
  89.  
  90.  
  91.         SetBitmap CUIDLL$, LOGO
  92.         SetTitle APPTITLE
  93.  
  94.         szInf$ = GetSymbolValue("STF_SRCINFPATH")
  95.         IF szInf$ = "" THEN
  96.             szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  97.         END IF
  98.         ReadInfFile szInf$
  99.  
  100.         ''Default destination path
  101.         DESTPATH$=APPDRIVE+APPPATH      ''default
  102.         GetLocalHardDrivesList "HARDDRIVE"
  103.         if GetListLength("HARDDRIVE")>0 then
  104.                 DESTPATH$=GetListItem("HARDDRIVE", 1)+":"+APPPATH
  105.         end if
  106.  
  107.         ''Default CD-ROM path
  108.         ''Note: CD-ROMS look like read-only network drives.
  109.         CDPATH$="D:\"   ''default
  110.         GetNetworkDrivesList "NETWORKDRIVE"
  111.         if GetListLength("NETWORKDRIVE")>0 then
  112.                 for i%=1 to GetListLength("NETWORKDRIVE") step 1
  113.                         temp$=GetListItem("NETWORKDRIVE",i%)+":\"
  114.                         if IsDirWritable(temp$) = 0 then
  115.                                 CDPATH$=temp$
  116.                         end if
  117.                 next i%
  118.         end if
  119.  
  120.         ''Default Student record path
  121.         RECPATH$="A:\"  ''default
  122.         GetRemovableDrivesList "REMOVABLEDRIVE"
  123.         if GetListLength("REMOVABLEDRIVE")>0 then
  124.                 RECPATH$=GetListItem("REMOVABLEDRIVE", 1)+":\"
  125.         end if
  126.  
  127.  
  128. '' Welcome dialog
  129. WELCOME:
  130.         sz$ = UIStartDlg(CUIDLL$, DLG_WELCOME, "FInfoDlgProc", DLG_APPHELP, HELPPROC$)
  131.         IF sz$ = "CONTINUE" THEN
  132.                 UIPop 1
  133.         ELSE
  134.                 GOSUB ASKQUIT
  135.                 GOTO WELCOME
  136.         END IF
  137.  
  138. ''Check space on windows drive
  139.         BuildVfW
  140.         SizeReq& = GetCopyListCost ("","", "")
  141.         IF SizeReq& <> 0 THEN
  142.             GOSUB WINTOOSMALL
  143.             ERROR STFQUIT
  144.         END IF
  145.  
  146.  
  147. '' Get destination path
  148. GETDEST:
  149.         SetSymbolValue "EditTextIn", DESTPATH$
  150.         SetSymbolValue "EditFocus", "END"
  151. GETDESTL1:
  152.         sz$ = UIStartDlg(CUIDLL$, DLG_DESTPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  153.         DESTPATH$ = GetSymbolValue("EditTextOut")
  154.         DESTDRIVE$ = MID$(DESTPATH$, 1, 1)
  155.  
  156.         IF sz$ = "CONTINUE" THEN
  157.             IF IsDirWritable(DESTPATH$) = 0 THEN
  158.                     GOSUB BADPATH
  159.                     GOTO GETDESTL1
  160.             ELSEIF IsDriveValid(DESTDRIVE$)=0 THEN
  161.                     GOSUB BADPATH
  162.                     GOTO GETDESTL1
  163.             END IF
  164.             UIPop 1
  165.         ELSEIF sz$ = "REACTIVATE" THEN
  166.                 GOTO GETDESTL1
  167.         ELSE
  168.                 GOSUB ASKQUIT
  169.                 GOTO GETDEST
  170.         END IF
  171.  
  172. ''Check space on destination drive
  173.         DiskSize&=GetFreeSpaceForDrive(MID$(DESTPATH$,1,1))
  174.  
  175.         If GetFreeSpaceForDrive(WINDRIVE$)< APPSIZE then
  176.             GOSUB DESTTOOSMALL
  177.             GOTO GETDEST
  178.         EndIf
  179.  
  180.  
  181. '' Get CD path
  182. GETCD:
  183.         SetSymbolValue "EditTextIn", CDPATH$
  184.         SetSymbolValue "EditFocus", "END"
  185. GETCDL1:
  186.         sz$ = UIStartDlg(CUIDLL$, DLG_CDPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  187.         CDPATH$ = GetSymbolValue("EditTextOut")
  188.         CDDRIVE$ = MID$(CDPATH$, 1, 1)
  189.  
  190.         IF sz$ = "CONTINUE" THEN
  191.             IF IsDirWritable(CDPATH$) THEN
  192.                     GOSUB BADPATH
  193.                     GOTO GETCDL1
  194.             ELSEIF IsDriveValid(CDDRIVE$)=0 THEN
  195.                     GOSUB BADPATH
  196.                     GOTO GETCDL1
  197.             END IF
  198.             UIPop 1
  199.         ELSEIF sz$ = "BACK" THEN
  200.                 UIPop 1
  201.                 GOTO GETDEST
  202.         ELSEIF sz$ = "REACTIVATE" THEN
  203.                 GOTO GETCDL1
  204.         ELSE
  205.                 GOSUB ASKQUIT
  206.                 GOTO GETCD
  207.         END IF
  208.  
  209.  
  210. '' Get Record path - removed 11/5/94
  211. ''GETREC:
  212. ''        SetSymbolValue "EditTextIn", RECPATH$
  213. ''        SetSymbolValue "EditFocus", "END"
  214. ''GETRECL1:
  215. ''        sz$ = UIStartDlg(CUIDLL$, DLG_RECPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  216. ''        RECPATH$ = GetSymbolValue("EditTextOut")
  217. ''        RECDRIVE$ = MID$(RECPATH$, 1, 1)
  218. ''
  219. ''        IF sz$ = "CONTINUE" THEN
  220. ''            IF IsDriveValid(RECDRIVE$)=0 THEN
  221. ''                    GOSUB BADPATH
  222. ''                    GOTO GETRECL1
  223. ''            END IF
  224. ''            UIPop 1
  225. ''        ELSEIF sz$ = "BACK" THEN
  226. ''                UIPop 1
  227. ''                GOTO GETCD
  228. ''        ELSEIF sz$ = "REACTIVATE" THEN
  229. ''                GOTO GETRECL1
  230. ''        ELSE
  231. ''                GOSUB ASKQUIT
  232. ''                GOTO GETREC
  233. ''        END IF
  234.  
  235.  
  236. '' Registration prompt
  237. REGISTER:
  238.         sz$ = UIStartDlg(CUIDLL$, DLG_REGISTER, "FInfoDlgProc", DLG_APPHELP, HELPPROC$)
  239.  
  240.         IF sz$ = "CONTINUE" THEN
  241.             UIPop 1
  242.         ELSEIF sz$ = "BACK" THEN
  243.                 UIPop 1
  244.                 GOTO GETCD
  245.         ELSEIF sz$ = "REACTIVATE" THEN
  246.                 GOTO REGISTER
  247.         ELSE
  248.                 GOSUB ASKQUIT
  249.                 GOTO GETCD
  250.         END IF
  251.  
  252.  
  253.  
  254. '' Do installation
  255.         CreateDir DESTPATH$, cmoNone
  256.         OpenLogFile MakePath(DESTPATH$, "SETUP.LOG"), 0
  257.  
  258.         InstallApp
  259.         InstallVfW
  260.  
  261.         WriteToLogFile "Final error state: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL)
  262.         CloseLogFile
  263.  
  264.  
  265. '' The following bit of code is copied (more or less) verbatim from the VFW 1.1
  266. '' setup. I can't so how it can work because _msrstst.exe & _mssetup.bat don't
  267. '' appear to exist. MJP 24/3/94
  268. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  269. '' else, it gives the user the choice
  270.         DEST$ = GetWindowsDir()
  271.         RESTRT% = RestartListEmpty ()
  272.         Exe$ = DEST$ + "\_msrstrt.exe"
  273.         Batch$ = DEST$ + "\_mssetup.bat"
  274.         empty$ = ""
  275. RESTART:
  276.         IF RESTRT% = 0 THEN
  277.                sz$ = UIStartDlg(cuidll$, DLG_RESTART, "FInfo0DlgProc", 0, "")
  278.                IF sz$ = "REACTIVATE" THEN
  279.                       GOTO RESTART
  280.                ENDIF
  281.                I% = ExitExecRestart ()
  282.                RemoveFile Exe$, cmoForce
  283.                RemoveFile Batch$, cmoForce
  284.                END
  285.         ELSE
  286.                 sz$ = UIStartDlg(CUIDLL$, DLG_RESTARTOPT, "FQuitDlgProc", 0, "")
  287.                 IF sz$ = "CONTINUE" THEN
  288.                         I% = ExitWindowsExec (Exe$, empty$)
  289.                         IF I% = 0 THEN
  290.                                 GOTO RESTART
  291.                         ELSE
  292.                                 END
  293.                         ENDIF
  294.                 ELSEIF sz$ = "EXIT" THEN
  295.                         UIPopAll
  296.                        END
  297.                 ELSEIF sz$ = "REACTIVATE" THEN
  298.                         GOTO RESTART
  299.                 ELSE
  300.                         UIPop 1
  301.                 END IF
  302.         END IF
  303.  
  304. QUIT:
  305.         ON ERROR GOTO ERRQUIT
  306.  
  307.         IF ERR = 0 THEN
  308.                 dlg% = DLG_EXITSUCCESS
  309.         ELSEIF ERR = STFQUIT THEN
  310.                 dlg% = DLG_EXITQUIT
  311.         ELSE
  312.                 OpenLogFile MakePath(DESTPATH$, "SETUP.ERR"), 0
  313.                 WriteToLogFile "Error on quitting: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL)
  314.                 CloseLogFile
  315.                 dlg% = DLG_EXITFAILURE
  316.         END IF
  317. QUITL1:
  318.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  319.         IF sz$ = "REACTIVATE" THEN
  320.                 GOTO QUITL1
  321.         END IF
  322.         UIPop 1
  323.  
  324.         END
  325.  
  326. ERRQUIT:
  327.         i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  328.         END
  329.  
  330.  
  331. BADPATH:
  332.         sz$ = UIStartDlg(CUIDLL$, DLG_BADPATH, "FInfo0DlgProc", 0, "")
  333.         IF sz$ = "REACTIVATE" THEN
  334.                 GOTO BADPATH
  335.         END IF
  336.         UIPop 1
  337.         RETURN
  338.  
  339.  
  340.  
  341. ASKQUIT:
  342.         sz$ = UIStartDlg(CUIDLL$, DLG_ASKQUIT, "FQuitDlgProc", 0, "")
  343.  
  344.         IF sz$ = "EXIT" THEN
  345.                 UIPopAll
  346.                 ERROR STFQUIT
  347.         ELSEIF sz$ = "REACTIVATE" THEN
  348.                 GOTO ASKQUIT
  349.         ELSE
  350.                 UIPop 1
  351.         END IF
  352.         RETURN
  353.  
  354.  
  355.  
  356. '' Not enough space on windows drive
  357. WINTOOSMALL:
  358.     sz$ = UIStartDlg(CUIDLL$, DLG_WINTOOSMALL, "FInfo0DlgProc", 0, "")
  359.     IF sz$ = "REACTIVATE" THEN
  360.         GOTO WINTOOSMALL
  361.     END IF
  362.     UIPop 1
  363.     RETURN
  364.  
  365. '' Not enough space on destinition drive
  366. DESTTOOSMALL:
  367.     sz$ = UIStartDlg(CUIDLL$, DLG_DESTTOOSMALL, "FInfo0DlgProc", 0, "")
  368.     IF sz$ = "REACTIVATE" THEN
  369.         GOTO DESTTOOSMALL
  370.     END IF
  371.     UIPop 1
  372.     RETURN
  373.  
  374.  
  375. '**
  376. '** Purpose:
  377. '**     Builds the copy list for Video for Windows runtime drivers
  378. '** Arguments:
  379. '**     none.
  380. '** Returns:
  381. '**     none.
  382. '*************************************************************************
  383. SUB BuildVfW STATIC
  384.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  385.  
  386.         ClearCopyList
  387.         AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WINSYSPATH$
  388.         AddSectionFilesToCopyList "OLE2", SrcDir$, WINSYSPATH$
  389.         AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WINSYSPATH$
  390.         AddSectionFilesToCopyList "MPlayer", SrcDir$, WINPATH$
  391.         AddSectionFilesToCopyList "AVICodecs", SrcDir$, WINSYSPATH$
  392.         AddSectionFilesToCopyList "Indeo-ini", SrcDir$, WINPATH$
  393. END SUB
  394.  
  395.  
  396. '**
  397. '** Purpose:
  398. '**     Builds the copy list and installs Video for Windows runtime drivers
  399. '** Arguments:
  400. '**     none.
  401. '** Returns:
  402. '**     none.
  403. '*************************************************************************
  404. SUB InstallVfW STATIC
  405.         WriteToLogFile "InstallVfW"
  406.         SetTitle DRVTITLE
  407.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  408.  
  409.         BuildVfW
  410.  
  411.         SetRestartDir WINPATH$
  412.         CopyFilesInCopyList
  413.         WriteToLogFile "VfW files copied"
  414.  
  415.         IF VflatdPresent() = 0 THEN
  416.            CreateSysIniKeyValue WINPATH$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  417.         END IF
  418.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  419.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  420.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  421.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  422.         I% = DoesIniKeyExist (WINPATH$+"system.ini", "Drivers", "VIDC.RT21")
  423.         IF I% = 0  THEN
  424.            CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  425.         END IF
  426.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  427.         CreateIniKeyValue WINPATH$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  428.         CreateIniKeyValue WINPATH$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  429.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  430.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  431.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  432.         CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  433.         CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  434.         CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  435.  
  436.         WriteToLogFile "Running Regedit"
  437.         Run ("regedit.exe /s " + MakePath(WINPATH$, "mplayer.reg"))
  438.         Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "OLE2.reg"))
  439.         Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "cleanup.reg"))
  440.  
  441.         WriteToLogFile "Putting Media Player in Accessories group"
  442.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  443.  
  444.         WriteToLogFile "Running Profdisp"
  445.         Run ("profdisp.exe")
  446.  
  447. END SUB
  448.  
  449.  
  450.  
  451. '**
  452. '** Purpose:
  453. '**     Builds the copy list and installs App software.
  454. '** Arguments:
  455. '**     none.
  456. '** Returns:
  457. '**     none.
  458. '*************************************************************************
  459. SUB InstallApp STATIC
  460.         WriteToLogFile "InstallApp"
  461.         SetTitle APPTITLE
  462.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  463.         CreateDir DESTPATH$, cmoNone
  464.  
  465.         WriteToLogFile ""
  466.         WriteToLogFile "  Source directory: '" + SrcDir$ + "'"
  467.         WriteToLogFile "  User chose destination path: '" + DESTPATH$ + "'"
  468.         WriteToLogFile "  User chose CD-ROM path: '" + CDPATH$ + "'"
  469.         WriteToLogFile "  User record path: '" + RECPATH$ + "'"
  470.         WriteToLogFile "  Windows directory: '" + WINPATH$ + "'"
  471.         WriteToLogFile "  Windows system directory: '" + WINSYSPATH$ + "'"
  472.         WriteToLogFile ""
  473.  
  474.         ClearCopyList
  475.         AddSectionFilesToCopyList "Files", SrcDir$, DESTPATH$
  476.         CopyFilesInCopyList
  477.         WriteToLogFile "App files copied"
  478.  
  479.         ini$ = MakePath(WINPATH$, INIFILE)
  480.         CreateIniKeyValue ini$, "FilePaths", "RunPath", MakePath(DESTPATH$,"") , cmoOverwrite
  481.         CreateIniKeyValue ini$, "FilePaths", "VideoPath", MakePath(CDPATH$,"") , cmoOverwrite
  482.         CreateIniKeyValue ini$, "FilePaths", "AudioPath", MakePath(CDPATH$,"") , cmoOverwrite
  483.         CreateIniKeyValue ini$, "FilePaths", "GraphicPath", MakePath(CDPATH$,"") , cmoOverwrite
  484.         CreateIniKeyValue ini$, "FilePaths", "AltGraphicPath", "", cmoOverwrite
  485.         CreateIniKeyValue ini$, "FilePaths", "StudentFile", MakePath(RECPATH$,"MCWFY.REC") , cmoOverwrite
  486.  
  487.         CreateProgmanGroup PROGGROUP, "", cmoNone
  488.         ShowProgmanGroup  PROGGROUP, 1, cmoNone
  489.         CreateProgmanItem PROGGROUP, PROGITEM, MakePath(DESTPATH$,PROGEXE), "", cmoOverwrite
  490.  
  491. END SUB
  492.  
  493.  
  494.  
  495. '**
  496. '** Purpose:
  497. '**     Appends a file name to the end of a directory path,
  498. '**     inserting a backslash character as needed.
  499. '** Arguments:
  500. '**     szDir$  - full directory path (with optional ending "\")
  501. '**     szFile$ - filename to append to directory
  502. '** Returns:
  503. '**     Resulting fully qualified path name.
  504. '*************************************************************************
  505. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  506.     IF szDir$ = "" THEN
  507.         MakePath = szFile$
  508.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  509.         MakePath = szDir$ + szFile$
  510.     ELSE
  511.         MakePath = szDir$ + "\" + szFile$
  512.     END IF
  513. END FUNCTION
  514.  
  515.